Skip to content

Add support for customizing the default Integer format#792

Merged
christianhelle merged 20 commits into
mainfrom
integer-format
Oct 20, 2025
Merged

Add support for customizing the default Integer format#792
christianhelle merged 20 commits into
mainfrom
integer-format

Conversation

@christianhelle

@christianhelle christianhelle commented Oct 18, 2025

Copy link
Copy Markdown
Owner

This implements #167

With the changes here, using the --integer-type Int64 on the following OpenAPI spec:

{
  "openapi": "3.0.1",
  "info": {
    "title": "Test API",
    "version": "1.0.0"
  },
  "paths": {
    "/test": {
      "get": {
        "operationId": "TestEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestModel"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "TestModel": {
        "type": "object",
        "properties": {
          "integerWithoutFormat": {
            "type": "integer",
            "description": "Integer without format - should default to int but optionally be long"
          },
          "integerWithInt32Format": {
            "type": "integer",
            "format": "int32"
          },
          "integerWithInt64Format": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    }
  }
}

will generated the following type:

public partial class TestModel
{
    /// <summary>
    /// Integer without format - should default to int but optionally be long
    /// </summary>
    [JsonPropertyName("integerWithoutFormat")]
    public long IntegerWithoutFormat { get; set; }

    [JsonPropertyName("integerWithInt32Format")]
    public int IntegerWithInt32Format { get; set; }

    [JsonPropertyName("integerWithInt64Format")]
    public long IntegerWithInt64Format { get; set; }

    private IDictionary<string, object> _additionalProperties;

    [JsonExtensionData]
    public IDictionary<string, object> AdditionalProperties
    {
        get { return _additionalProperties ?? (_additionalProperties = new Dictionary<string, object>()); }
        set { _additionalProperties = value; }
    }
}

Summary by CodeRabbit

  • New Features

    • Added --integer-type CLI option and integerType config (default Int32; choices: Int32, Int64) to control .NET type used for OpenAPI integers without a format.
  • Documentation

    • Updated CLI help, README, config schema and examples to document the new option and setting.
  • Tests

    • Added tests validating generated code and buildability for both Int32 and Int64 integer handling.

@christianhelle christianhelle self-assigned this Oct 18, 2025
Copilot AI review requested due to automatic review settings October 18, 2025 22:42
@christianhelle christianhelle added the enhancement New feature, bug fix, or request label Oct 18, 2025
@coderabbitai

coderabbitai Bot commented Oct 18, 2025

Copy link
Copy Markdown
Contributor

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds a new IntegerType enum (Int32/Int64), exposes it via a --integer-type CLI flag and .refitter config property, documents and updates the JSON schema, implements schema transformations in the C# generator to honor the setting, and adds tests validating generated integer types and buildability.

Changes

Cohort / File(s) Summary
Documentation & Schema
README.md, docs/docfx_project/articles/cli-tool.md, docs/docfx_project/articles/refitter-file-format.md, docs/json-schema.json, src/Refitter.MSBuild/README.md, src/Refitter.SourceGenerator/README.md, src/Refitter/README.md, .github/copilot-instructions.md
Add docs, examples, and JSON schema entries for the new integerType/IntegerType setting and the --integer-type CLI flag; document defaults (Int32/int) and allowed values (Int32/Int64 or int/long).
Configuration & CLI wiring
src/Refitter.Core/Settings/CodeGeneratorSettings.cs, src/Refitter/Settings.cs, src/Refitter/GenerateCommand.cs
Add a strongly-typed IntegerType property (default Int32), bind it to the CLI option --integer-type, and propagate the setting into generator initialization.
Core implementation
src/Refitter.Core/CSharpClientGeneratorFactory.cs, src/Refitter.Core/IntegerType.cs
Add IntegerType enum and generator-side logic (ApplyCustomIntegerType, ProcessSchemasForIntegerType, ProcessSchemaForIntegerType) to traverse and modify JsonSchema nodes so OpenAPI integer types without a format map to the configured .NET integer type.
Tests
src/Refitter.Tests/Examples/IntegerFormatTests.cs
New test suite validating default and configured integer mapping, explicit int32/int64 handling, presence of expected int/long in generated code, and that generated code builds for both configurations.

Sequence Diagram(s)

sequenceDiagram
    participant User as CLI User
    participant Loader as Settings Loader
    participant Factory as CSharpClientGeneratorFactory
    participant Schema as OpenAPI JsonSchema

    User->>Loader: parse --integer-type (e.g. Int64)
    Loader->>Factory: CreateGenerator(settings.IntegerType)

    alt IntegerType != Int32
        rect rgb(230,245,230)
        Note over Factory,Schema: Apply custom integer-type transformation
        Factory->>Schema: Traverse schemas (properties, items, additionalProperties)
        Schema-->>Factory: Identify integer schemas with no format
        Factory->>Schema: Set format to int64 (map to Int64)
        end
    else IntegerType == Int32
        Factory->>Factory: No transformation — use default mapping
    end

    Factory-->>User: Emit generated C# code using selected integer mapping
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested labels

.NET

Poem

🐇 I hopped through schemas, soft and keen,
I taught the ints to pick a scene.
Tiny Int32 or stalwart Int64,
I nudged the generator, then danced some more.
Happy builds and carrots galore!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The PR title "Add support for customizing the default Integer format" directly addresses the primary objective of the changeset: enabling users to customize how OpenAPI integer types without explicit format specifications map to C# integer types. The title is concise, specific, and avoids vague terms or noise. A teammate scanning the pull request history would immediately understand that this introduces a new customization capability for integer type mapping, which aligns with the core feature being implemented (the new --integer-type CLI flag and integerType configuration property).
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch integer-format

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds support for customizing the .NET type used for OpenAPI integer types that don't have a format specifier, implementing feature request #167. By default, integers without a format are mapped to int, but users can now configure them to use long instead.

Key Changes:

  • Added new IntegerType configuration option to CLI, settings files, and code generator
  • Implemented schema processing logic to apply custom integer type formatting
  • Added comprehensive test coverage for the new feature

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/Refitter/Settings.cs Added CLI command option for integer type configuration
src/Refitter/GenerateCommand.cs Wired up integer type setting to code generator
src/Refitter.Core/Settings/CodeGeneratorSettings.cs Added IntegerType property with default value
src/Refitter.Core/CSharpClientGeneratorFactory.cs Implemented schema processing logic to apply custom integer type
src/Refitter.Tests/Examples/IntegerFormatTests.cs Added test coverage for integer type customization
src/Refitter/README.md Updated CLI documentation with new option
src/Refitter.SourceGenerator/README.md Updated source generator documentation
src/Refitter.MSBuild/README.md Updated MSBuild task documentation
docs/json-schema.json Added integerType to JSON schema
docs/docfx_project/articles/refitter-file-format.md Updated file format documentation
docs/docfx_project/articles/cli-tool.md Updated CLI tool documentation
README.md Updated main README with new option

Comment thread src/Refitter.Core/CSharpClientGeneratorFactory.cs
Comment thread src/Refitter.Core/CSharpClientGeneratorFactory.cs Outdated
@codecov

codecov Bot commented Oct 18, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.47619% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.32%. Comparing base (8439b69) to head (2b3eac5).
⚠️ Report is 27 commits behind head on main.

Files with missing lines Patch % Lines
src/Refitter.Core/CSharpClientGeneratorFactory.cs 90.24% 1 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #792      +/-   ##
==========================================
- Coverage   92.36%   92.32%   -0.05%     
==========================================
  Files          24       24              
  Lines        1795     1837      +42     
  Branches      276      295      +19     
==========================================
+ Hits         1658     1696      +38     
- Misses        101      102       +1     
- Partials       36       39       +3     
Flag Coverage Δ
unittests 92.32% <90.47%> (-0.05%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@christianhelle christianhelle changed the title Add support for customizing the Integer format Add support for customizing the default Integer format Oct 20, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cbcdbd8 and 5feb7c1.

📒 Files selected for processing (1)
  • src/Refitter.Tests/Examples/IntegerFormatTests.cs (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
src/**/*.cs

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.cs: Follow existing C# coding conventions defined in .editorconfig
Use PascalCase for public members
Use camelCase for parameters and local variables
Include XML documentation for public APIs
Use meaningful variable and method names

Files:

  • src/Refitter.Tests/Examples/IntegerFormatTests.cs
src/Refitter.Tests/Examples/**/*.cs

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

All new code must include unit tests following the Refitter.Tests.Examples pattern

Files:

  • src/Refitter.Tests/Examples/IntegerFormatTests.cs
🧠 Learnings (1)
📚 Learning: 2025-09-17T20:15:55.708Z
Learnt from: CR
PR: christianhelle/refitter#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-09-17T20:15:55.708Z
Learning: Applies to src/Refitter.Tests/Examples/**/*.cs : All new code must include unit tests following the Refitter.Tests.Examples pattern

Applied to files:

  • src/Refitter.Tests/Examples/IntegerFormatTests.cs
🧬 Code graph analysis (1)
src/Refitter.Tests/Examples/IntegerFormatTests.cs (3)
src/Refitter/GenerateCommand.cs (5)
  • Task (27-269)
  • Task (319-379)
  • Task (395-539)
  • Task (662-769)
  • RefitGeneratorSettings (271-318)
src/Refitter.Tests/Build/BuildHelper.cs (2)
  • BuildHelper (6-53)
  • BuildCSharp (8-45)
src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs (1)
  • SwaggerFileHelper (9-25)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: 👌 Verify build
  • GitHub Check: script
  • GitHub Check: 👌 Verify build
🔇 Additional comments (3)
src/Refitter.Tests/Examples/IntegerFormatTests.cs (3)

1-10: LGTM!

The imports and namespace declaration are appropriate for a test class in the Refitter.Tests.Examples pattern.


116-162: Excellent test coverage!

The test suite comprehensively validates the integer format feature:

  • Default and custom IntegerType settings
  • Explicit format preservation (int32, int64)
  • Build verification for both configurations

Test names are clear and follow good conventions.


164-192: LGTM!

The helper methods are well-structured and follow consistent patterns:

  • Clear separation between default and custom configurations
  • Proper use of SwaggerFileHelper and RefitGenerator
  • Meaningful variable names following camelCase convention

Comment thread src/Refitter.Tests/Examples/IntegerFormatTests.cs Outdated
@sonarqubecloud

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
src/Refitter.Tests/Examples/IntegerFormatTests.cs (1)

11-190: Past JSON syntax issue has been resolved.

The missing comma between RequestModel and ResponseModel (previously flagged around lines 93-94, now line 122) has been corrected. The JSON structure is now valid.

🧹 Nitpick comments (1)
src/Refitter.Tests/Examples/IntegerFormatTests.cs (1)

240-268: Consider reducing duplication between helper methods.

The two helper methods share significant logic, differing only in the CodeGeneratorSettings configuration. You could extract a common method that accepts an optional IntegerType parameter.

Example refactor:

-    private static async Task<string> GenerateCode()
+    private static async Task<string> GenerateCode(IntegerType? integerType = null)
     {
         var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec);
         var settings = new RefitGeneratorSettings
         {
             OpenApiPath = swaggerFile,
+            CodeGeneratorSettings = integerType.HasValue 
+                ? new CodeGeneratorSettings { IntegerType = integerType.Value }
+                : null
         };
 
         var sut = await RefitGenerator.CreateAsync(settings);
         var generatedCode = sut.Generate();
         return generatedCode;
     }
 
     private static async Task<string> GenerateCodeWithLongIntegers()
     {
-        var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec);
-        var settings = new RefitGeneratorSettings
-        {
-            OpenApiPath = swaggerFile,
-            CodeGeneratorSettings = new CodeGeneratorSettings
-            {
-                IntegerType = IntegerType.Int64
-            }
-        };
-
-        var sut = await RefitGenerator.CreateAsync(settings);
-        var generatedCode = sut.Generate();
-        return generatedCode;
+        return await GenerateCode(IntegerType.Int64);
     }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5feb7c1 and 2b3eac5.

📒 Files selected for processing (1)
  • src/Refitter.Tests/Examples/IntegerFormatTests.cs (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
src/**/*.cs

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.cs: Follow existing C# coding conventions defined in .editorconfig
Use PascalCase for public members
Use camelCase for parameters and local variables
Include XML documentation for public APIs
Use meaningful variable and method names

Files:

  • src/Refitter.Tests/Examples/IntegerFormatTests.cs
src/Refitter.Tests/Examples/**/*.cs

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

All new code must include unit tests following the Refitter.Tests.Examples pattern

Files:

  • src/Refitter.Tests/Examples/IntegerFormatTests.cs
🧠 Learnings (1)
📚 Learning: 2025-09-17T20:15:55.708Z
Learnt from: CR
PR: christianhelle/refitter#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-09-17T20:15:55.708Z
Learning: Applies to src/Refitter.Tests/Examples/**/*.cs : All new code must include unit tests following the Refitter.Tests.Examples pattern

Applied to files:

  • src/Refitter.Tests/Examples/IntegerFormatTests.cs
🧬 Code graph analysis (1)
src/Refitter.Tests/Examples/IntegerFormatTests.cs (4)
src/Refitter/GenerateCommand.cs (5)
  • Task (27-269)
  • Task (319-379)
  • Task (395-539)
  • Task (662-769)
  • RefitGeneratorSettings (271-318)
src/Refitter.Tests/Build/BuildHelper.cs (2)
  • BuildHelper (6-53)
  • BuildCSharp (8-45)
src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs (1)
  • SwaggerFileHelper (9-25)
src/Refitter.Core/RefitGenerator.cs (1)
  • RefitGenerator (10-300)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: script
  • GitHub Check: 👌 Verify build
  • GitHub Check: 👌 Verify build
  • GitHub Check: 👌 Verify build
  • GitHub Check: Analyze (csharp)
🔇 Additional comments (1)
src/Refitter.Tests/Examples/IntegerFormatTests.cs (1)

192-238: Comprehensive test coverage for integer format customization.

The test suite effectively validates the core scenarios:

  • Default int mapping for unformatted integers
  • Configurable long mapping via IntegerType.Int64
  • Explicit format preservation (int32int, int64long)
  • Build verification for both configurations

The string-based assertions are adequate for code generation tests and are backed by build tests that catch compilation issues.

@christianhelle
christianhelle merged commit 224d2de into main Oct 20, 2025
10 of 12 checks passed
@christianhelle
christianhelle deleted the integer-format branch October 20, 2025 20:28
hwinther pushed a commit to hwinther/test that referenced this pull request Dec 4, 2025
Updated [refitter](https://github.com/christianhelle/refitter) from
1.4.0 to 1.7.0.

<details>
<summary>Release notes</summary>

_Sourced from [refitter's
releases](https://github.com/christianhelle/refitter/releases)._

## 1.7.0

## What's Changed
* Fix Multipart file array support by @​christianhelle in
christianhelle/refitter#784
* Add option to remove
`[JsonConverter(typeof(JsonStringEnumConverter))]` from generated
contracts by @​christianhelle in
christianhelle/refitter#786
* Improve OpenAPI Description handling by @​christianhelle in
christianhelle/refitter#787
* Update Smoke Tests workflow trigger by @​christianhelle in
christianhelle/refitter#791
* Add support for customizing the default Integer format by
@​christianhelle in christianhelle/refitter#792
* NSwag v14.6.2 by @​christianhelle in
christianhelle/refitter#800

## New Contributors:
- @​christophdebaene 
- @​7amou3 
- @​HGCollier

**Full Changelog**:
christianhelle/refitter@1.6.5...1.7.0

## 1.6.5

## What's Changed
* Do not remove colon from url paths, verify they're not present in
operation names by @​eoma-knowit in
christianhelle/refitter#765
* Add ability to skip-validation + simplify Unicode logging by
@​david-pw in christianhelle/refitter#767
* Use NSwag's built-in System.Text.Json polymorphic serialization by
@​0xced in christianhelle/refitter#772

## New Contributors
* @​eoma-knowit made their first contribution in
christianhelle/refitter#765
* @​david-pw made their first contribution in
christianhelle/refitter#767
* @​0xced made their first contribution in
christianhelle/refitter#772

**Full Changelog**:
christianhelle/refitter@1.6.4...1.6.5

## 1.6.4

## What's Changed
* Fix SonarCloud maintainability issues - eliminate code duplication and
improve code quality in
christianhelle/refitter#753
* Update --operation-name-template implementation to replace all
{operationName} instances with Execute by @​christianhelle in
christianhelle/refitter#759


**Full Changelog**:
christianhelle/refitter@1.6.3...1.6.4

## 1.6.3

## What's Changed
* Fix MSBuild task so that the generated code is included in the
compilation by @​christianhelle in
christianhelle/refitter#745
* Add support for systems running only .NET 9.0 (without .NET 8.0) in
Refitter.MSBuild by @​christianhelle in
christianhelle/refitter#746
* Introduce --simple-output CLI argument by @​christianhelle in
christianhelle/refitter#751


**Full Changelog**:
christianhelle/refitter@1.6.2...1.6.3

## 1.6.2

## What's Changed
* docs: add @​SWarnberg as a contributor for bug by
@​allcontributors[bot] in
christianhelle/refitter#714
* docs: add @​lilinus as a contributor for bug by @​allcontributors[bot]
in christianhelle/refitter#717
* Fix missing namespace import by @​christianhelle in
christianhelle/refitter#718
* Fix match path on cmd prompt by @​christianhelle in
christianhelle/refitter#719
* Fix table alignments in CLI Output by @​christianhelle in
christianhelle/refitter#720
* NSwag v14.5.0 by @​renovate[bot] in
christianhelle/refitter#722
* Add comprehensive GitHub Copilot instructions for Refitter repository
by @​Copilot in christianhelle/refitter#725
* Bump actions/checkout from 4 to 5 by @​dependabot[bot] in
christianhelle/refitter#727
* chore(deps): update dependency polly to 8.6.2 by @​renovate[bot] in
christianhelle/refitter#716
* chore(deps): update dependency microsoft.extensions.http.resilience to
9.8.0 by @​renovate[bot] in
christianhelle/refitter#728
* ASCII Art Title by @​christianhelle in
christianhelle/refitter#729


**Full Changelog**:
christianhelle/refitter@1.6.1...1.6.2

## 1.6.1

## What's Changed
* Update dependency Refitter.SourceGenerator to 1.6.0 by @​renovate in
christianhelle/refitter#704
* Add console output screenshots to documentation by @​christianhelle in
christianhelle/refitter#705
* docs: add @​sb-chericks as a contributor for ideas, and bug by
@​allcontributors in christianhelle/refitter#707
* chore(deps): update dependency xunit.runner.visualstudio to 3.1.1 by
@​renovate in christianhelle/refitter#708
* Ensure that Refit interfaces have a XML docs by @​christianhelle in
christianhelle/refitter#709

**Full Changelog**:
christianhelle/refitter@1.6.0...1.6.1

## 1.6.0

**Implemented enhancements:**

- fix missing schema for dictionary keys
[\#​697](christianhelle/refitter#697) @​kirides
- Fancy CLI output using Spectre Console
[\#​695](christianhelle/refitter#695)
@​christianhelle

**Fixed bugs:**

- \[Bug\] Refitter generates invalid \[Range\] attribute for decimal
properties starting from v1.5.2
[\#​668](christianhelle/refitter#668)
@​tommieemeli
- Generates Content-Type: multipart/form-data Header which breaks
Multipart uploads
[\#​654](christianhelle/refitter#654) @​dbhjoh
@​jaroslaw-dutka

**Closed issues:**

- Improve documentation
[\#​700](christianhelle/refitter#700)

**Merged pull requests:**

- Update dependency Polly to 8.6.1
[\#​703](christianhelle/refitter#703)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Swashbuckle.AspNetCore to v9
[\#​702](christianhelle/refitter#702)
([renovate[bot]](https://github.com/apps/renovate))
- Fix typos and grammar issues in documentation
[\#​701](christianhelle/refitter#701)
([Copilot](https://github.com/apps/copilot-swe-agent))
- Update dotnet monorepo
[\#​699](christianhelle/refitter#699)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Polly to 8.6.0
[\#​698](christianhelle/refitter#698)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Refitter.SourceGenerator to 1.5.6
[\#​696](christianhelle/refitter#696)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Microsoft.NET.Test.Sdk to 17.14.1
[\#​692](christianhelle/refitter#692)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Swashbuckle.AspNetCore to 8.1.4
[\#​691](christianhelle/refitter#691)
([renovate[bot]](https://github.com/apps/renovate))


See [Full
Changelog](christianhelle/refitter@1.5.6...1.6.0)

## 1.5.6

## What's Changed
* Use fully qualified type name in Class template by @​velvolue in
christianhelle/refitter#686
* Add .NET 9.0 to Target Frameworks by @​christianhelle in
christianhelle/refitter#690
* Do not add both [Multipart] and "Content-Type: multipart/form-data" by
@​jaroslaw-dutka in christianhelle/refitter#693

## Merged pull requests
* chore(deps): update dependency refitter.sourcegenerator to 1.5.5 by
@​renovate in christianhelle/refitter#671
* docs: add MrScottyTay as a contributor for bug by @​allcontributors in
christianhelle/refitter#673
* chore(deps): update dotnet monorepo by @​renovate in
christianhelle/refitter#674
* chore(deps): update dependency microsoft.build.utilities.core to
17.14.7 by @​renovate in
christianhelle/refitter#675
* chore(deps): update dependency microsoft.build.utilities.core to
17.14.8 by @​renovate in
christianhelle/refitter#676
* chore(deps): update dependency microsoft.net.test.sdk to 17.14.0 by
@​renovate in christianhelle/refitter#680
* Add Contribution Guidelines by @​copilot-swe-agent in
christianhelle/refitter#679
* chore(deps): update dependency swashbuckle.aspnetcore to 8.1.2 by
@​renovate in christianhelle/refitter#682
* docs: add velvolue as a contributor for bug by @​allcontributors in
christianhelle/refitter#687
* Use fully qualified type name in Class template by @​velvolue in
christianhelle/refitter#686
* Resolve build warnings and add TreatWarningsAsErrors by
@​copilot-swe-agent in
christianhelle/refitter#689
* Add .NET 9.0 to Target Frameworks by @​christianhelle in
christianhelle/refitter#690
* Do not add both [Multipart] and "Content-Type: multipart/form-data" by
@​jaroslaw-dutka in christianhelle/refitter#693

**Full Changelog**:
christianhelle/refitter@1.5.5...1.5.6

## 1.5.5

## What's Changed

- Using CollectionFormats other than Multi
[\#​640](christianhelle/refitter#640)
(@​ebarnard)
- Add collection format option to CLI tool documentation
[\#​664](christianhelle/refitter#664)
(@​christianhelle)
- Made Security Header Parameters safe for C\# when unsafe characters
are present
[\#​663](christianhelle/refitter#663)
(@​AragornHL)

## Merged pull requests:

- chore\(deps\): update dependency xunit.runner.visualstudio to 3.1.0
[\#​670](christianhelle/refitter#670)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add tommieemeli as a contributor for bug
[\#​669](christianhelle/refitter#669)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- Update nswag monorepo to 14.4.0
[\#​665](christianhelle/refitter#665)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency refitter.sourcegenerator to 1.5.4
[\#​662](christianhelle/refitter#662)
([renovate[bot]](https://github.com/apps/renovate))

**Full Changelog**:
christianhelle/refitter@1.5.4...1.5.5

## 1.5.4

## What's Changed

- Adding security schemes to the api interface generator
[\#​106](christianhelle/refitter#106)
- Response type handling to only use 2XX range
[\#​661](christianhelle/refitter#661)
([christianhelle](https://github.com/christianhelle))
- Add support for 2XX and Default Response Objects
[\#​660](christianhelle/refitter#660)
([christianhelle](https://github.com/christianhelle))
- Add Header Parameters for Security Schemes
[\#​653](christianhelle/refitter#653)
([AragornHL](https://github.com/AragornHL))

## Merged Pull Requests:
* chore(deps): update dependency refitter.sourcegenerator to 1.5.3 by
@​renovate in christianhelle/refitter#645
* chore(deps): update dependency swashbuckle.aspnetcore to 8.1.0 by
@​renovate in christianhelle/refitter#646
* chore(deps): update dependency exceptionless to 6.1.0 by @​renovate in
christianhelle/refitter#647
* chore(deps): update dependency spectre.console.cli to 0.50.0 by
@​renovate in christianhelle/refitter#649
* chore(deps): update dotnet monorepo to 9.0.4 by @​renovate in
christianhelle/refitter#648
* chore(deps): update dependency microsoft.extensions.http.resilience to
9.4.0 by @​renovate in
christianhelle/refitter#650
* chore(deps): update dependency swashbuckle.aspnetcore to 8.1.1 by
@​renovate in christianhelle/refitter#651
* Add Header Parameters for Security Schemes by @​AragornHL in
christianhelle/refitter#653
* docs: add @​AragornHL as a contributor for code by @​allcontributors
in christianhelle/refitter#655
* docs: add @​kmfd3s as a contributor for code by @​allcontributors in
christianhelle/refitter#656
* Update smoke tests to generate authentication headers by
@​christianhelle in christianhelle/refitter#657
* docs: add @​pfeigl as a contributor for bug by @​allcontributors in
christianhelle/refitter#659
* Add support for 2XX and Default Response Objects by @​christianhelle
in christianhelle/refitter#660
* Response type handling to only use 2XX range by @​christianhelle in
christianhelle/refitter#661

## New Contributors
* @​AragornHL made their first contribution in
christianhelle/refitter#653

**Full Changelog**:
christianhelle/refitter@1.5.3...1.5.4

## 1.5.3

**Implemented enhancements:**

- Naming properties problem
[\#​641](christianhelle/refitter#641)
- Allow comments in .refitter Configuration
[\#​631](christianhelle/refitter#631)
- NSwag v14.3.0
[\#​644](christianhelle/refitter#644)
([renovate[bot]](https://github.com/apps/renovate))
- Convert properties with underscores to PascalCase
[\#​643](christianhelle/refitter#643)
([christianhelle](https://github.com/christianhelle))
- Add support for deserializing JSON with comments and update tests
[\#​637](christianhelle/refitter#637)
([sebastian-wachsmuth](https://github.com/sebastian-wachsmuth))
- Temporary fix for Source Generator when running in Visual Studio
[\#​634](christianhelle/refitter#634)
([christianhelle](https://github.com/christianhelle))
- JSON Schema generator for documentation
[\#​623](christianhelle/refitter#623)
([christianhelle](https://github.com/christianhelle))
- Fix missing Content-Type \[Headers\]
[\#​619](christianhelle/refitter#619)
([christianhelle](https://github.com/christianhelle))
- Fix invalid characters in generated XML docs
[\#​607](christianhelle/refitter#607)
([christianhelle](https://github.com/christianhelle))
- Add support for custom DateTimeFormat
[\#​604](christianhelle/refitter#604)
([christianhelle](https://github.com/christianhelle))
- Fix ISO date format handling when dateFormat is defined in settings
file [\#​603](christianhelle/refitter#603)
([christianhelle](https://github.com/christianhelle))

**Fixed bugs:**

- Doesn't add Content-Type request header when body is plain JSON string
[\#​617](christianhelle/refitter#617)
- Broken xml doc when swagger descriptions contains "\<" or "\>"
characters
[\#​605](christianhelle/refitter#605)
- date-time parameters are encoded as date when iso8601 is used
[\#​599](christianhelle/refitter#599)

**Closed issues:**

- OpenAPI Schema and Authorization Attributes
[\#​629](christianhelle/refitter#629)

**Merged pull requests:**

- docs: add @​lowern1ght as a contributor for bug
[\#​642](christianhelle/refitter#642)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- docs: add @​qrzychu as a contributor for bug
[\#​639](christianhelle/refitter#639)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- docs: add @​sebastian-wachsmuth as a contributor for code
[\#​638](christianhelle/refitter#638)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- Update dependency Swashbuckle.AspNetCore to v8
[\#​633](christianhelle/refitter#633)
([renovate[bot]](https://github.com/apps/renovate))
- Update dotnet monorepo
[\#​630](christianhelle/refitter#630)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Atc.Test to 1.1.18
[\#​628](christianhelle/refitter#628)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Swashbuckle.AspNetCore to 7.3.1
[\#​626](christianhelle/refitter#626)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency Swashbuckle.AspNetCore to 7.3.0
[\#​624](christianhelle/refitter#624)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency fluentassertions to 7.2.0
[\#​622](christianhelle/refitter#622)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency apizr.integrations.fusillade to 6.4.2
[\#​621](christianhelle/refitter#621)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add @​Metziell as a contributor for bug
[\#​620](christianhelle/refitter#620)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- docs: add @​Fargekritt as a contributor for bug
[\#​618](christianhelle/refitter#618)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- chore\(deps\): update dependency apizr.integrations.automapper to
6.4.2 [\#​616](christianhelle/refitter#616)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency apizr.extensions.microsoft.caching to
6.4.2 [\#​615](christianhelle/refitter#615)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency
microsoft.applicationinsights.windowsserver to 2.23.0
[\#​614](christianhelle/refitter#614)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency microsoft.build.utilities.core to
17.13.9 [\#​612](christianhelle/refitter#612)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dotnet monorepo
[\#​611](christianhelle/refitter#611)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency microsoft.net.test.sdk to 17.13.0
[\#​610](christianhelle/refitter#610)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency xunit.runner.visualstudio to 3.0.2
[\#​609](christianhelle/refitter#609)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency polly to 8.5.2
[\#​608](christianhelle/refitter#608)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add @​wocasella as a contributor for bug
[\#​606](christianhelle/refitter#606)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- chore\(deps\): update dependency refitter.sourcegenerator to 1.5.2
[\#​602](christianhelle/refitter#602)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency atc.test to 1.1.17
[\#​592](christianhelle/refitter#592)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency h.generators.extensions to 1.24.2
[\#​581](christianhelle/refitter#581)
([renovate[bot]](https://github.com/apps/renovate))
 ... (truncated)

## 1.5.2

## Implemented enhancements:

- Fix date formatting for date-time types
christianhelle/refitter#600
- Proper support for multipart form
christianhelle/refitter#595

## Fixed bugs:

- date-time parameters are encoded as date when iso8601 is used
christianhelle/refitter#599
- \[FromForm\] parameter on minimal api doesn't get generated on
Interface christianhelle/refitter#515

## Merged pull requests:
* chore(deps): update dependency coverlet.collector to 6.0.4 by
@​renovate in christianhelle/refitter#594
* Proper support for multipart form by @​jaroslaw-dutka in
christianhelle/refitter#595
* docs: add jaroslaw-dutka as a contributor for code by
@​allcontributors in christianhelle/refitter#596
* chore(deps): update dependency refitter.sourcegenerator to 1.5.0 by
@​renovate in christianhelle/refitter#593
* Remove dependency on System.Text.Json by @​christianhelle in
christianhelle/refitter#597
* chore(deps): update dependency refitter.sourcegenerator to 1.5.1 by
@​renovate in christianhelle/refitter#598
* docs: add maksionkin as a contributor for bug by @​allcontributors in
christianhelle/refitter#601
* Fix date formatting for date-time types by @​christianhelle in
christianhelle/refitter#600

## New Contributors
* @​jaroslaw-dutka made their first contribution in
christianhelle/refitter#595
* @​maksionkin reported their first issue in
christianhelle/refitter#599

**Full Changelog**:
christianhelle/refitter@1.5.0...1.5.2

## 1.5.0

## Implemented enhancements:

- Fix incorrect error message shown due to Spectre.Console parsing
[\#​585](christianhelle/refitter#585)
([christianhelle](https://github.com/christianhelle))
- Return null when object subtype is not found
[\#​577](christianhelle/refitter#577)
([velvolue](https://github.com/velvolue))
- Discard unused union types/inheritance types via config
[\#​575](christianhelle/refitter#575)
([kirides](https://github.com/kirides))
- Show Deserializaton Errors from Source Generator
[\#​572](christianhelle/refitter#572)
([christianhelle](https://github.com/christianhelle))
- Limit Exceptionless telemetry
[\#​564](christianhelle/refitter#564)
([christianhelle](https://github.com/christianhelle))
- Added simple logic to make most identifier strings valid
[\#​562](christianhelle/refitter#562)
([Fargekritt](https://github.com/Fargekritt))
- Fix -v|--version CLI tool argument
[\#​561](christianhelle/refitter#561)
([christianhelle](https://github.com/christianhelle))
- Less strict OpenAPI Validation rules
[\#​558](christianhelle/refitter#558)
([christianhelle](https://github.com/christianhelle))
- Added support for custom date format
[\#​554](christianhelle/refitter#554)
([Fargekritt](https://github.com/Fargekritt))
- Add support for disabling telemetry in MSBuild task
[\#​550](christianhelle/refitter#550)
([christianhelle](https://github.com/christianhelle))
- MSBuild Custom Task
[\#​548](christianhelle/refitter#548)
([christianhelle](https://github.com/christianhelle))
- Generate IDisposable Refit Interfaces
[\#​543](christianhelle/refitter#543)
([christianhelle](https://github.com/christianhelle))
- Clients implementing IDisposable interface
[\#​541](christianhelle/refitter#541)
([shubinp](https://github.com/shubinp))
- \[Apizr\] Deprecated Optional package removed from code & doc
[\#​539](christianhelle/refitter#539)
([JeremyBP](https://github.com/JeremyBP))
- Add PropertyNameGenerator as an optional Parameter
[\#​516](christianhelle/refitter#516)
- NSwag v14.2.0
[\#​532](christianhelle/refitter#532)
([renovate[bot]](https://github.com/apps/renovate))
- added options for a custom Name Generators
[\#​517](christianhelle/refitter#517)
([fsamiec](https://github.com/fsamiec))

## Fixed bugs:

- "Error: Could not find color or style 'System.String'."
[\#​583](christianhelle/refitter#583)
- Source generator errors are hidden
[\#​568](christianhelle/refitter#568)
- Refitter -v not showing version number
[\#​560](christianhelle/refitter#560)
- Not so nice behavior when generating client with trim-unused-schema
[\#​557](christianhelle/refitter#557)
- Two almost identical routes that fail at validation.
[\#​551](christianhelle/refitter#551)
- Code Generator creates unsafe interface method names
[\#​360](christianhelle/refitter#360)

## Closed issues:

- How to use in class library?
[\#​534](christianhelle/refitter#534)
- \[ISSUE\]\[1.2.1-preview.54\] Some impediments using CLI version. Is
not enough for my needs?
[\#​450](christianhelle/refitter#450)

## Merged Pull Requests
* chore(deps): update dependency refitter.sourcegenerator to 1.4.0 by
@​renovate in christianhelle/refitter#513
* chore(deps): update dependency swashbuckle.aspnetcore to 6.9.0 by
@​renovate in christianhelle/refitter#514
* added options for a custom Name Generators by @​fsamiec in
christianhelle/refitter#517
* docs: add fsamiec as a contributor for code by @​allcontributors in
christianhelle/refitter#518
* chore(deps): update refit monorepo to v8 (major) by @​renovate in
christianhelle/refitter#519
* docs: add fabioloreggian as a contributor for bug by @​allcontributors
in christianhelle/refitter#521
* chore(deps): update dependency fluentassertions to 6.12.2 by
@​renovate in christianhelle/refitter#523
* chore(deps): update dependency polly to 8.5.0 by @​renovate in
christianhelle/refitter#525
* chore(deps): update dependency swashbuckle.aspnetcore to v7 by
@​renovate in christianhelle/refitter#526
* chore(deps): update dependency h.generators.extensions to 1.24.0 by
@​renovate in christianhelle/refitter#528
* chore(deps): update dotnet monorepo to v9 (major) by @​renovate in
christianhelle/refitter#527
* NSwag v14.2.0 by @​renovate in
christianhelle/refitter#532
* chore(deps): update dependency microsoft.net.test.sdk to 17.12.0 by
@​renovate in christianhelle/refitter#531
* chore(deps): update dependency refitter.sourcegenerator to 1.4.1 by
@​renovate in christianhelle/refitter#533
* docs: add geometrikal as a contributor for bug by @​allcontributors in
christianhelle/refitter#535
 ... (truncated)

Commits viewable in [compare
view](christianhelle/refitter@1.4.0...1.7.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=refitter&package-manager=nuget&previous-version=1.4.0&new-version=1.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature, bug fix, or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When openapi not contains format field for integer type, it is generated as Int32 C# equivalent type

2 participants